
// 获取attribute变量的存储位置

import { baseError } from "../../debug";

/**
 * @param1 程序对象，包括了顶点着色器和片元着色器
 * @注意 必须在initShaders()之后再调用gl.program，因为initShader()函数创建了这个程序对象
 * @return 
 *  INVALID_OPERATION 程序对象未能成功连接(第九章)
 *  INVALID_VALUE     name参数的长度大于attribute变量名的最大长度(默认256字节)
 */
export function getAttribLocation(gl, varyName) {
  let loc = gl.getAttribLocation(gl.program, varyName);
  if (loc < 0) {
    baseError('Failed to get the storage location of ' + varyName);
    return -1;
  }
  return loc
}
/**
 * 不存在返回null
 */
export function getUniformLocation(gl, varyName) {
  let loc = gl.getUniformLocation(gl.program, varyName);
  if (!loc) {
    baseError('Failed to get the storage locations of ' + varyName);
    return;
  }
  return loc
}
